//package com.laiketui.payment.controller;
//
//import com.alibaba.fastjson.JSONObject;
//import com.google.common.collect.Maps;
//import com.laiketui.domain.lktconst.DictionaryConst;
//import com.laiketui.domain.vo.pay.PaymentVo;
//import com.laiketui.common.api.PublicPaymentConfigService;
//import com.laiketui.payment.api.AlipayService;
//import com.laiketui.root.annotation.HttpApiMethod;
//import com.laiketui.core.cache.RedisUtil;
//import org.apache.commons.collections.MapUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.servlet.http.HttpServletRequest;
//import java.util.Map;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
///**
// * @author wangxian
// */
//@RestController
//public class AlipayNotifyController {
//
//    private final Logger logger = LoggerFactory.getLogger(AlipayNotifyController.class);
//
//    @Autowired
//    RedisUtil redisUtil;
//
//    @Autowired
//    AlipayService alipayService;
//
//    @Autowired
//    private PublicPaymentConfigService publicPaymentConfigService;
//
//
//    public static String replaceBlank(String str) {
//        String dest = "";
//        if (str != null) {
//            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
//            Matcher m = p.matcher(str);
//            dest = m.replaceAll("");
//        }
//        return dest.replaceAll("/", "");
//    }
//
//    @RequestMapping("/alipayNotify")
//    @HttpApiMethod(urlMapping = {"app.v2.alipayNotify"})
//    public String alipayNotify(HttpServletRequest request) {
//        try {
//            /** 交易成功 */
//            String TRADE_SUCCESS = "TRADE_SUCCESS";
//            if (TRADE_SUCCESS.equals(request.getParameter("trade_status"))) {
//                logger.info("=========支付宝异步回调========");
//                Map<String, Object> params = Maps.newHashMap();
//                Map<String, String[]> requestParams = request.getParameterMap();
//
//                for (String name : requestParams.keySet()) {
//                    params.put(name, replaceBlank(request.getParameter(name)));
//                }
//                logger.info("回调参数：{}", params);
//                String payNo = MapUtils.getString(params, "out_trade_no");
//                String payConfigStr = null;
//                //不同类型的订单获取支付信息的方法不一样
//                if (payNo.contains(DictionaryConst.OrdersType.ORDERS_HEADER_DJ) || payNo.contains(DictionaryConst.OrdersType.ORDERS_HEADER_CZ)) {
//                    payConfigStr = publicPaymentConfigService.getPaymentConfigByMemberPayNo(payNo);
//                } else if (payNo.contains(DictionaryConst.OrdersType.ORDERS_HEADER_MCH_PROMISE)) {
//                    payConfigStr = publicPaymentConfigService.getPaymentConfigByMemberPayNo(payNo);
//                } else {
//                    payConfigStr = publicPaymentConfigService.getPaymentConfigByPayNo(payNo);
//                }
//                logger.info("payConfigStr:{}", payConfigStr);
//                JSONObject payConfigJson = JSONObject.parseObject(payConfigStr);
//                logger.info("payConfigJson:{}", payConfigJson);
//
//                PaymentVo paymentVo = new PaymentVo();
//                paymentVo.setPayType(payConfigJson.getString("payType"));
//                paymentVo.setStoreId(Integer.parseInt(payConfigJson.getString("storeId")));
//                paymentVo.setsNo(payNo);
//                if (payConfigJson.getString("userId") != null){
//                    paymentVo.setUserId(payConfigJson.getString("userId"));
//                }
//                if (payConfigJson.getString("map") != null){
//                    paymentVo.setParameter(payConfigJson.getString("map"));
//                }
//                if (payConfigJson.getString("real_sno") != null){
//                    paymentVo.setReal_sno(payConfigJson.getString("real_sno"));
//                }
//                if (payConfigJson.getString("storeType") != null){
//                    paymentVo.setStoreType(payConfigJson.getInteger("storeType"));
//                }
//                params.put("paymentVo", paymentVo);
//                alipayService.payBack(params);
//                logger.info("=========支付宝异步回调结束========");
//            }
//            return "success";
//        } catch (Exception e) {
//            logger.error("回调支付出错:", e);
//            return "fail";
//        }
//    }
//
//}
